package cn.lili.modules.order.order.service;


import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.order.order.entity.dos.PrizeGoods;
import cn.lili.modules.order.order.entity.dos.PrizeOrder;
import cn.lili.modules.order.order.entity.dto.PrizeOrderDTO;
import cn.lili.modules.order.order.entity.vo.PrizeOrderStatisticsVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author asus
 * @description 针对表【li_prize_order(中奖记录表)】的数据库操作Service
 * @createDate 2024-01-18 13:45:59
 */
public interface PrizeOrderService extends IService<PrizeOrder> {

    /**
     * 抽奖
     */
    ResultMessage<Object> prizeDraw(String freePayKey);

    /**
     * 抽奖中奖记录
     */
    ResultMessage<Object> raffleWinningRecord(PageVO pageVO);

    /**
     * 领取奖品
     */
    ResultMessage<Object> claimThePrize(PrizeOrder prizeOrder);

    /**
     * 查看物流信息
     *
     * @param id 订单ID
     */
    ResultMessage<Object> viewLogisticsInformation(String id);

    public List<PrizeGoods> prizeGoodsList();
    /**
     * 获取抽奖记录
     * @param dto
     * @return
     */
    Page<PrizeOrder> getPrizeOrderList(PrizeOrderDTO dto);

    /**
     * 导出订单
     * @param dto
     * @return
     */
    List<PrizeOrder> export(PrizeOrderDTO dto);
    /**
     * 填写物流信息
     * @param order
     * @return
     */
    ResultMessage<Object> inputExpressInfo(PrizeOrder order);

    /**
     * 抽奖金额统计
     * @param dto
     * @return
     */
    PrizeOrderStatisticsVO prizePriceStatistics(PrizeOrderDTO dto);

    /**
     * 抽奖用户数量统计
     * @param dto
     * @return
     */
    PrizeOrderStatisticsVO prizeUserCountStatistics(PrizeOrderDTO dto);

    /**
     * 抽奖回调
     * @return 抽奖回调
     */
    ResultMessage<Object> callback(PrizeOrder prizeOrder);


    /**
     * 密码支付抽奖
     */
    ResultMessage<Object> passwordPaymentDraw();



    /**
     * 获取最近一次 订单收货地址
     * @return 获取最近一次 订单收货地址
     */
    ResultMessage<Object> getHistoricalAddress();

}